/**
 * 统计分析相关API
 * 封装设备统计、报警统计、控制统计、场景统计、能耗分析等功能的接口
 */

import request from './request.js';

// API路径配置
const API_ROUTES = {
  STATS: {
    // 设备统计
    DEVICE_BASIC: '/api/stats/device/basic',           // 设备基本信息统计
    DEVICE_RUNNING: '/api/stats/device/running',       // 设备运行数据统计
    DEVICE_MAINTENANCE: '/api/stats/device/maintenance', // 设备维护数据统计
    DEVICE_COMPARE: '/api/stats/device/compare',       // 设备对比分析
    
    // 报警统计
    ALARM_SUMMARY: '/api/stats/alarm/summary',         // 报警汇总
    ALARM_TREND: '/api/stats/alarm/trend',             // 报警趋势
    ALARM_TYPE: '/api/stats/alarm/type',               // 报警类型分析
    ALARM_DEVICE: '/api/stats/alarm/device',           // 设备报警分析
    
    // 控制统计
    CONTROL_SUMMARY: '/api/stats/control/summary',     // 控制操作汇总
    CONTROL_TREND: '/api/stats/control/trend',         // 控制趋势
    CONTROL_EFFICIENCY: '/api/stats/control/efficiency', // 控制效率分析
    
    // 场景统计
    SCENE_USAGE: '/api/stats/scene/usage',             // 场景使用情况
    SCENE_EFFECT: '/api/stats/scene/effect',           // 场景效果分析
    
    // 能耗分析
    ENERGY_SUMMARY: '/api/stats/energy/summary',       // 能耗汇总
    ENERGY_TREND: '/api/stats/energy/trend',           // 能耗趋势
    ENERGY_COMPARE: '/api/stats/energy/compare',       // 能耗对比
    ENERGY_DEVICE: '/api/stats/energy/device',         // 设备能耗分析
    ENERGY_PERIOD: '/api/stats/energy/period',         // 时段能耗分析
    ENERGY_OPTIMIZATION: '/api/stats/energy/optimization', // 能耗优化建议
  }
};

/**
 * 统计分析API封装
 */
export default {
  /**
   * 获取设备基本信息统计
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 统计数据
   */
  getDeviceBasicStats(params = {}) {
    return request({
      url: API_ROUTES.STATS.DEVICE_BASIC,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备统计数据（总量、在线、离线）
   * @param {Object} params - 查询参数 {timeRange}
   * @returns {Promise} 统计数据
   */
  getDeviceStats(params = {}) {
    return request({
      url: '/api/stats/devices',
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取告警统计数据
   * @param {Object} params - 查询参数 {timeRange}
   * @returns {Promise} 统计数据
   */
  getAlarmStats(params = {}) {
    return request({
      url: '/api/stats/alarms',
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备状态分布数据
   * @param {Object} params - 查询参数 {timeRange}
   * @returns {Promise} 分布数据
   */
  getDeviceStatusDistribution(params = {}) {
    return request({
      url: '/api/stats/devices/status',
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备类型分布数据
   * @param {Object} params - 查询参数 {timeRange}
   * @returns {Promise} 分布数据
   */
  getDeviceTypeDistribution(params = {}) {
    return request({
      url: '/api/stats/devices/types',
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备运行数据统计
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 统计数据
   */
  getDeviceRunningStats(params = {}) {
    return request({
      url: API_ROUTES.STATS.DEVICE_RUNNING,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备维护数据统计
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 统计数据
   */
  getDeviceMaintenanceStats(params = {}) {
    return request({
      url: API_ROUTES.STATS.DEVICE_MAINTENANCE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备对比分析
   * @param {Object} params - 查询参数 {unitIds, categoryIds, timeRange}
   * @returns {Promise} 对比数据
   */
  getDeviceCompare(params = {}) {
    return request({
      url: API_ROUTES.STATS.DEVICE_COMPARE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取报警汇总
   * @param {Object} params - 查询参数 {unitId, timeRange}
   * @returns {Promise} 汇总数据
   */
  getAlarmSummary(params = {}) {
    return request({
      url: API_ROUTES.STATS.ALARM_SUMMARY,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取报警趋势
   * @param {Object} params - 查询参数 {unitId, timeRange, type}
   * @returns {Promise} 趋势数据
   */
  getAlarmTrend(params = {}) {
    // 判断是否有 timeRange 参数，以区分不同的调用方式
    if (params.timeRange && typeof params.timeRange === 'string') {
      // 统计页面的简化路径
      return request({
        url: '/api/stats/alarms/trend',
        method: 'GET',
        data: params
      });
    } else {
      // 原来详细的路径
      return request({
        url: API_ROUTES.STATS.ALARM_TREND,
        method: 'GET',
        data: params
      });
    }
  },
  
  /**
   * 获取报警类型分析
   * @param {Object} params - 查询参数 {unitId, timeRange}
   * @returns {Promise} 分析数据
   */
  getAlarmTypeAnalysis(params = {}) {
    return request({
      url: API_ROUTES.STATS.ALARM_TYPE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备报警分析
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 分析数据
   */
  getDeviceAlarmAnalysis(params = {}) {
    return request({
      url: API_ROUTES.STATS.ALARM_DEVICE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取控制操作汇总
   * @param {Object} params - 查询参数 {unitId, timeRange}
   * @returns {Promise} 汇总数据
   */
  getControlSummary(params = {}) {
    return request({
      url: API_ROUTES.STATS.CONTROL_SUMMARY,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取控制趋势
   * @param {Object} params - 查询参数 {unitId, deviceId, timeRange}
   * @returns {Promise} 趋势数据
   */
  getControlTrend(params = {}) {
    return request({
      url: API_ROUTES.STATS.CONTROL_TREND,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取控制效率分析
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 分析数据
   */
  getControlEfficiencyAnalysis(params = {}) {
    return request({
      url: API_ROUTES.STATS.CONTROL_EFFICIENCY,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取场景使用情况
   * @param {Object} params - 查询参数 {unitId, timeRange}
   * @returns {Promise} 使用数据
   */
  getSceneUsage(params = {}) {
    return request({
      url: API_ROUTES.STATS.SCENE_USAGE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取场景效果分析
   * @param {Object} params - 查询参数 {unitId, sceneId, timeRange}
   * @returns {Promise} 分析数据
   */
  getSceneEffectAnalysis(params = {}) {
    return request({
      url: API_ROUTES.STATS.SCENE_EFFECT,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取能耗汇总
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 汇总数据
   */
  getEnergySummary(params = {}) {
    return request({
      url: API_ROUTES.STATS.ENERGY_SUMMARY,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取能耗趋势
   * @param {Object} params - 查询参数 {unitId, deviceId, categoryId, timeRange}
   * @returns {Promise} 趋势数据
   */
  getEnergyTrend(params = {}) {
    return request({
      url: API_ROUTES.STATS.ENERGY_TREND,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取能耗对比
   * @param {Object} params - 查询参数 {unitIds, deviceIds, categoryIds, timeRanges}
   * @returns {Promise} 对比数据
   */
  getEnergyCompare(params = {}) {
    return request({
      url: API_ROUTES.STATS.ENERGY_COMPARE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备能耗分析
   * @param {Object} params - 查询参数 {unitId, deviceId, timeRange, type}
   * @returns {Promise} 分析数据
   */
  getDeviceEnergyAnalysis(params = {}) {
    return request({
      url: API_ROUTES.STATS.ENERGY_DEVICE,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取时段能耗分析
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 分析数据
   */
  getPeriodEnergyAnalysis(params = {}) {
    return request({
      url: API_ROUTES.STATS.ENERGY_PERIOD,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取能耗优化建议
   * @param {Object} params - 查询参数 {unitId, deviceId, categoryId}
   * @returns {Promise} 优化建议
   */
  getEnergyOptimizationSuggestions(params = {}) {
    return request({
      url: API_ROUTES.STATS.ENERGY_OPTIMIZATION,
      method: 'GET',
      data: params
    });
  }
}; 